package iterator;

/**
 * @Author: Ma JiBin
 * @Email: 1423553596@qq.com
 * @Date: 2018/9/12 10:37
 * @Description: 实现Container接口的实体类
 * 包含实现Iterator接口的内部类
 */
public class NameRepository implements Container {
    String[] names = {"Tom", "Kite", "Bill", "Lily"};

    /**
     * 获取迭代器对象方法
     *
     * @return 实现Iterator接口的对象
     */
    @Override
    public Iterator getIterator() {
        return new NameIterator();
    }

    private class NameIterator implements Iterator {
        /**
         * 记录names数组下标
         */
        int index = 0;

        /**
         * 判断是否有下一个
         *
         * @return boolean类型值
         */
        @Override
        public boolean hasNext() {
            if (index < names.length) {
                return true;
            }
            return false;
        }

        /**
         * 返回下一个对象
         *
         * @return Object类型
         */
        @Override
        public Object next() {
            if (this.hasNext()) {
                return names[index++];
            }
            return null;
        }
    }
}
